<?php
//update_comment.php - получает uin
//читает, соответствующий файл txt
//обновляет инфо в базе данных согласно txt файлам

//запись в файл filename строки str
//параметры записи mode
function write_to_file($filename, $mode, $str) {
$file = fopen ($filename, $mode);
  if ( !$file ) echo("Ошибка открытия файла $filename<br/>");
  else {
    fputs ($file, $str);
    fclose ($file);
  }
}

//обновляет запись в базе данных, формирует ответ в html
function update_row(&$uin, &$filename, $checked, $aproved, $comments) {
    $sql = "UPDATE ".BASE." SET
      comments = '$comments',
      checked = '$checked',
      aproved = '$aproved',
      md5 = '". md5_file($filename)."'
      WHERE uin = '$uin'";

    mysql_query($sql);
    if (mysql_errno () > 0) echo mysql_errno().'  '.mysql_error().'<br/>';
}

//проверяет обновился ли файл
//возвращает BOOLEAN
function check_file_for_updates (&$uin, &$project, &$drawing, &$revision, &$part, &$path, &$md5) {
    //формируем путь к файлу, включая дирректорию
    $filename = $project.' '.$drawing.'_Rev'.sprintf("%02d", $revision).'_'.sprintf("%02d", $part).'.txt';
    $filename =  "../".STORAGE_PATH.SEPARATOR.$path.SEPARATOR.$filename;
    
//    echo 'MD5 = '.md5_file($filename);
    
    //если файла нет
     if (!is_file($filename)) {
         //создаем такой файл, checked = 0
         write_to_file($filename, 'w', '0');
         //формируем запрос для обновления checked
         update_row($uin, $filename, 0, 0, '');
         return TRUE;
    //если файл уже есть
     } else 
         //сравниваем md5 файла и базы
         //файл не изменился
         if (md5_file($filename) == $md5) return FALSE;
         //файл изменился
         else {
             $checked = file_get_contents($filename, NULL, NULL, 0, 1);
             //если не проверено
            if ($checked == 0)
                //формируем запрос для обновления checked
                 update_row($uin, $filename, 0, 0, '');
            //если проверено
            if ($checked == 1) {
                //если есть комментарии
                if (filesize($filename) > 3) {
                    //читаем комментарии
                    $text = file_get_contents($filename, NULL, NULL, 3);
                    //формируем текст комментария
                    $text = htmlspecialchars(iconv('WINDOWS-1251', 'UTF-8',$text));
                    //формируем запрос для  записи комментария
                    update_row($uin, $filename, 1, 0, $text);
                //если нет комментариев
                } else 
                    //формируем запрос для обновления aproved
                     update_row($uin, $filename, 1, 1, '');
            }
            return TRUE;
         }
     
     
         
}

//подключаемся к базе
include_once './db_connect.php';


//Получаем переменные
$uin = $_POST['uin'];

$dbh = mysql_connect(HOST, USER, PSWD) or die("Не могу соединиться с MySQL.");
mysql_select_db(DATABASE) or die("Не могу подключиться к базе.");
$res = mysql_query("SET NAMES utf8");

//получаем строку с данным uin
$sql = "SELECT * FROM ".BASE." WHERE uin = '$uin'"; 
//echo $sql.'<br/>';

$result = mysql_query($sql);
if (mysql_errno () > 0) 
    echo mysql_errno().'  '.mysql_error().'<br/>';
else
    if (mysql_num_rows($result) > 0) 
        while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
           if (check_file_for_updates($row['uin'], $row['project'], $row['drawing'],
                    $row['revision'], $row['part'], $row['path'], $row['md5']))
               echo 'TRUE'; else echo 'FALSE';
               
//закрываем соединение с базой
mysql_close($dbh);
?>
